package com.cg.utils;

/**
 * @ClassName NumUtils
 * @Description TODO
 * @Author CG
 * @Date 2024/1/3 10:43
 **/
public class NumUtils {

    /**
     * 根据身份证号获取出生年月
     * 15位身份证号码：第7、8位为出生年份（两位数），第9、10位为出生月份，第11、12位代表出生日期，第15位代表性别，奇数为男，偶数为女。
     * 18位身份证号码：第7、8、9、10位为出生年份（四位数），第11、第12位为出生月份，第13、14位代表出生日期，第17位代表性别，奇数为男，偶数为女
     */
    public static String getBirthdayByIdCard(String idCard){
        String year,month,day;
        //如果身份证号是15位
        if(idCard.length() == 15){
            //年份默认19开头
            year = "19";
            year = year + idCard.substring(6,8);
            //月
            month = idCard.substring(8,10);
            //日
            day = idCard.substring(10,12);
            return year+"-"+month+"-"+day;
        }
        //如果身份证号是18位
        if(idCard.length() == 18){
            //年
            year = idCard.substring(6,10);
            //月
            month = idCard.substring(10,12);
            //日
            day = idCard.substring(12,14);
            return year+"-"+month+"-"+day;
        }
        //身份证号不是15位也不是18位
        return null;
    }

    /**
     * 根据身份证号获取性别
     */
    public static Integer getGenderByIdCard(String idCard){
        //如果身份证号是15位
        if(idCard.length() == 15){
            //获取最后一位
            String genderStr = idCard.substring(14);
            Integer gender = Integer.parseInt(genderStr);
            if(gender%2 == 0){
                return 2;
            }
            return 1;
        }
        //如果身份证号是18位
        if(idCard.length() == 18){
            //获取第17位
            String genderStr = idCard.substring(16,17);
            Integer gender = Integer.parseInt(genderStr);
            if(gender%2 == 0){
                return 2;
            }
            return 1;
        }
        //身份证号不是15位也不是18位
        return null;
    }
}
